% Copyright (c) 2016, David Stutz
% Contact: david.stutz@rwth-aachen.de, davidstutz.de
% All rights reserved.
% 
% Redistribution and use in source and binary forms, with or without modification,
% are permitted provided that the following conditions are met:
% 
% 1. Redistributions of source code must retain the above copyright notice,
%    this list of conditions and the following disclaimer.
% 
% 2. Redistributions in binary form must reproduce the above copyright notice,
%    this list of conditions and the following disclaimer in the
%    documentation and/or other materials provided with the distribution.
% 
% 3. Neither the name of the copyright holder nor the names of its contributors
%    may be used to endorse or promote products derived from this software
%    without specific prior written permission.
% 
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
% ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
% THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
% ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
% LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
% ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
% OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

% This script is intended to convert the Fashionista dataset into the used
% format and collect the training and testing subsets used in the paper.

% INSTRUCTIONS:
% 1. Download the Fashionista dataset from
%    http://vision.is.tohoku.ac.jp/~kyamagu/research/clothing_parsing/
% 2. Extract fashionista_v0.2.1.mat into data/Fash.
% 3. Adapt the below variables to match the path where data/Fash can be
%    found.
% 4. Run this script.

% NOTE THAT THIS SCRIPT MAY TAKE SOME TIME TO FINISH.
% ON a 8GB RAM, i5 Ubuntu 12.04 machine it took ~140 seconds.

% FASH_DIR is the base directory of the Fashionista dataset, i.e. where the
% training and testing images plus ground truth are stored.
% FASH_MAT is the .mat file provided by the Fashionista dataset and should
% be saved in FASH_DIR.
% FASH_LIST_TRAIN is the path to fash_train.txt, contained in the
% repository, or generated by fash_make_subsets
% FASH_LIST_TEST is the path to fash_test.txt, contained in the repository,
% or generated by fash_make_subsets
FASH_DIR = '/home/david/superpixels/release/data/Fash/'; % With trailing "/"!
FASH_MAT = [FASH_DIR 'fashionista_v0.2.1.mat'];
FASH_LIST_TRAIN = [FASH_DIR 'fash_train.txt'];
FASH_LIST_TEST = [FASH_DIR 'fash_test.txt'];

train_list = dlmread(FASH_LIST_TRAIN);
test_list = dlmread(FASH_LIST_TEST);

load(FASH_MAT, 'truths');
fprintf('Generating images ... ');
tic;
fash_generate_images(truths, [FASH_DIR 'images']);
elapsed = toc;
fprintf('done (%f).\n', elapsed);

fprintf('Generating ground truth ... ');
tic;
fash_generate_groundtruth(truths, [FASH_DIR 'csv_groundTruth']);
elapsed = toc;
fprintf('done (%f).\n', elapsed);

fprintf('Collecting training and test sets ... ');
tic;
fash_collect_subsets(train_list, test_list, [FASH_DIR 'images'], [FASH_DIR 'csv_groundTruth']);
elapsed = toc;
fprintf('done (%f).\n', elapsed);